package talent.vo;

import lombok.Data;

/**
 * 人才推荐信息视图对象（VO）
 * <p>
 * 用于封装企业推荐系统生成的人才推荐结果，包含人才排名、能力评估及推荐理由等核心数据。
 * 通过 Lombok 的 {@code @Data} 注解自动生成 getter/setter 等方法。
 *
 * @author 系统生成
 * @version 1.0
 * @since 2025-06-11
 */
@Data
public class RecommendationVO {
    /**
     * 人才在推荐榜单中的排名序号
     * <p>从1开始计数，数值越小表示推荐优先级越高
     */
    private Integer rank;

    /**
     * 候选人唯一标识ID
     * <p>对应数据库中的主键字段，用于关联人才详情
     */
    private Long candidateId;

    /**
     * 候选人姓名
     */
    private String candidateName;

    /**
     * 技能评估得分（0-10分）
     * <p>计算规则：根据项目数量等级转换（1→5分, 2→7分, 3→10分）
     */
    private Integer skillScore;

    /**
     * 工作经验评估得分（0-10分）
     * <p>计算规则：根据工作经验等级转换（1→3分, 2→4分, ..., 8→10分）
     */
    private Integer experienceScore;

    /**
     * 教育背景评估得分（0-10分）
     * <p>计算规则：根据学历等级转换（1→3分, 2→4分, ..., 6→10分）
     */
    private Integer educationScore;

    /**
     * 候选人期望薪资（单位：元/月）
     */
    private Integer salaryRequirement;

    /**
     * 与岗位需求的综合匹配度百分比（0.0-100.0%）
     * <p>计算公式：(技能权重×技能分 + 经验权重×经验分 + 教育权重×教育分) / 总分
     */
    private Double matchPercentage;

    /**
     * 人才综合价值评分（0.0-10.0）
     * <p>计算规则：加权平均得分 = (技能分×0.4 + 经验分×0.4 + 教育分×0.2) - 薪资调整系数
     */
    private Double valueScore;

    /**
     * 推荐理由文本
     * <p>格式示例："技能匹配度：... 经验匹配度：... 教育背景匹配度：... 薪资匹配度：..."
     * @see
     * <pre>{@code
     * if (skillMatched) { "技能水平达到要求" }
     * if (salary <= maxSalary*0.8) { "具有高性价比" }
     * }</pre>
     */
    private String recommendationReason;
}
